package com.cloudfun.campusshare.common.model.dto.kjt;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by Huqin on 2020/7/31
 */
@Data
@ApiModel("快捷通即时到账请求DTO")
public class KjtInstantTradeReqDTO {

    /**
     * 买家标识类型，买家快捷通会员标识类型，默认1
     * 1-快捷通会员ID
     * 2-快捷通会员登录号
     */
    @JsonProperty("payer_identity_type")
    private String payerIdentityType;

    /**
     * 买家会员ID或登录账号；
     * 如没有快捷通会员ID和登录账号，则填写固定值：anonymous
     */
    @JsonProperty("payer_identity")
    private String payerIdentity = "anonymous";

    /**
     * 买家平台类型，固定值：1
     */
    @JsonProperty("payer_platform_type")
    private String payerPlatformType = "1";

    /**
     * payer_ip
     */
    @JsonProperty("payer_ip")
    private String payerIp;

    /**
     * 支付方式，根据不同的业务场景选择合适的支付方式
     */
    @JsonProperty("pay_method")
    private KjtMiniProgramPayMethodDTO payMethod;

    /**
     * 不期望使用的支付产品，多个用英文逗号(,)隔开
     */
    @JsonProperty("inexpectant_pay_product_code")
    private String inexpectantPayProductCode;

    /**
     * 业务产品码，
     * 20601-即时到帐-电商
     * 20401-即时到帐-互金
     * 20602-线下收单（支持T0退款)
     * 20701-收单（先分账后结算）
     */
    @JsonProperty("biz_product_code")
    private String bizProductCode = "20701";

    /**
     * 收银台类型
     * WEB	跳转快捷通WEB收银台页面；
     * H5	H5收银台，手机页面端选择使用，跳转快捷通H5收银台页面，具体参考前端对接文档。
     * SDK	SDK收银台，APP应用选择使用；选择SDK收银台时，网关不会跳转到收银台页面而是返回trade_token,如:
     * "biz_content":{"out_trade_no":"20180528114125160547183","trade_no":"101152747892179168680","status":"P","trade_token":"3baed917-9003-484a-9f48-9dbe3116e2f4"}
     * 商户APP调用SDK收银台时，需要传入trade_token，具体参考前端对接文档。
     * API	纯接口交互,仅支持协议支付、直接支付、条码类交易；具体参考支付方式参数。
     */
    @JsonProperty("cashier_type")
    private String cashierType = "API";

    /**
     * 订单允许的最晚付款时间，该笔订单允许的最晚付款时间，逾期将关闭交易。
     * 取值范围：0或10m～7d。m-分钟，h-小时，d-天。默认2h。该字段数值不接受小数点，
     * 如 1.5h，可转换为 90m。请合理设置时间，若订单到时关闭，则不允许发起交易。
     * 若订单关闭时，用户已在支付中并成功完成交易。系统会自动退款
     */
    @JsonProperty("timeout_express")
    private String timeoutExpress;

    /**
     * 交易信息，目前只传一个对象
     * 长度[1,20]
     */
    @JsonProperty("trade_info")
    private KjtInstantTradeInfoDTO tradeInfo;

    /**
     * 终端信息域
     * {"terminal_type":"01","ip":"122.224.203.210"}
     * 00	电脑
     * 01	手机
     * 02	平板设备
     * 03	可穿戴设备
     * 04	数字电视
     * 99	其他
     */
    @JsonProperty("terminal_info")
    private Map<String, String> terminalInfo = new HashMap<>();

    /**
     * 商户自定义域：
     * 1、go_cashier:跳转收银台标志。值为Y自动跳转；值为N不跳转，返回收银台链接。不传默认为Y。
     * 2、cashier_login只在选择网银时使用
     * Y:收银台登录界面
     * N:网银选择界面
     * 3、need_login选择收银台模式：
     * need_login值为N，跳转一键支付收银台（无账户模式）；
     * need_login值为空，跳转标准收银台（H5为账户模式，WEB为账户模式+一键支付）；
     * 4、send_message发送短信标识(可空)：
     * 只在支付方式为协议支付且传递token时有效
     * Y:发送短信
     * N:不发短信
     */
    @JsonProperty("merchant_custom")
    private Map<String, String> merchantCustom;

    /**
     * String(512)	快捷通处理完请求后，当前页面自动跳转到商户网站里指定页面的http/https路径
     */
    @JsonProperty("return_url")
    private String returnUrl;
}
